//
//  YDLogViewController.swift
//  weibo
//
//  Created by 孙亚东 on 16/6/24.
//  Copyright © 2016年 Sunyadong. All rights reserved.
//

import UIKit

class YDLogViewController: UIViewController {
    
     let webView = UIWebView()
    
    
    override func loadView() {
      
        self.view = webView
        
        self.title = "登录"
        
    }
    

    override func viewDidLoad() {
        super.viewDidLoad()

//         let urlString = "https://api.weibo.com/oauth2/authorize?client_id=3950016492&redirect_uri=http://www.baidu.com"
        
        let urlString = "https://api.weibo.com/oauth2/authorize?client_id=\(AppKey)&redirect_uri=\(AppRedirectURL)"
        
        let url = NSURL(string: urlString)!
        
        webView.loadRequest(NSURLRequest(URL: url))
        
        webView.delegate = self
        
        
        setUpUI()
    
    }


}

// 第一步: 加载webView界面

extension YDLogViewController {

    
    func setUpUI (){
        
        navigationItem.leftBarButtonItem = UIBarButtonItem.init(title: "返回", style: .Plain, target: self, action: "backBtnClick")
        
        navigationItem.rightBarButtonItem = UIBarButtonItem.init(title: "自动填充", style: .Plain, target: self, action: "auto")
        
        
    }
    
    func backBtnClick () {
        
        
        dismissViewControllerAnimated(true, completion: nil)
        
        
    }
    
    
    func auto() {
        
        
        //实现webView的代理方法呢
        // 1. 我们会频繁的输入用户名和密码
        // 2. 自动填充会设置到 js与 webView的交互
        
        // 针对 "  转化有2种方式 第一种是转义 第二种 " -> '
        //        let js = "document.getElementById('userId').value = 'itcast123456@hotmail.com';document.getElementById('passwd').value = 'itcast123456'"
        
        
        let js = "document.getElementById('userId').value = '15210632196';document.getElementById('passwd').value = '15210632196'"
        
        
        webView.stringByEvaluatingJavaScriptFromString(js)
   
    }

}


//第二步:获取code

extension YDLogViewController: UIWebViewDelegate {
    
    
    func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {

        
        if let url = request.URL?.absoluteString {
        
            if url.hasPrefix(AppRedirectURL){
  
                
                if let codeUrl = request.URL?.query {
                
                //获取code
                    let index = "code=".endIndex
                    
                    let code = codeUrl.substringFromIndex(index)
                    
                    let successinfo = { ()->() in
                        
                        
                        print("返回成功")
                      self.backBtnClick()
                        
                        
                    // 走到这说明，已经获取token成功，可以返回到欢迎界面
                    NSNotificationCenter.defaultCenter().postNotificationName("welcome", object: self)
                        
              }
                    
                    let failureInfo = { ()->() in
                        
                        
                        print("返回失败")
                        
                        
                    }

                    //将code传入请求参数，获取token
                    YDOauthViewModel.shareOauthViewModel.loadToken(code, successInfo: successinfo, failureInfo: failureInfo)
                    
                    
                    
                }
    
            }
        
        }
        
        return true
        
        
    }


}


//第三步： 获取token
extension YDLogViewController{
    
//    
//    func loadToken (code: String){
//    
//        /**
//         *
//         https://api.weibo.com/oauth2/access_token
//         HTTP请求方式
//         POST
//         请求参数
//         必选	类型及范围	说明
//         client_id	true	string	申请应用时分配的AppKey。
//         client_secret	true	string	申请应用时分配的AppSecret。
//         grant_type	true	string	请求的类型，填写authorization_code
//         
//         grant_type为authorization_code时
//         必选	类型及范围	说明
//         code	true	string	调用authorize获得的code值。
//         redirect_uri	true	string	回调地址，需需与注册应用里的回调地址一致。
//         
//         */
//         
//         //获取单例对象
//        let manager = YDClientManager.shareManager
//        
//        manager.responseSerializer.acceptableContentTypes?.insert("text/plain")
//        
//        let dic = ["client_id":AppKey,
//            "client_secret":AppSecret,
//            "grant_type":"authorization_code",
//            "code":code,
//            "redirect_uri":AppRedirectURL
//            
//        ]
//        
//        manager.sendRequest(.POST, URLString: "https://api.weibo.com/oauth2/access_token", parameters: dic, progress: nil, success: { (NSURLSessionDataTask, json) -> Void in
//            
//            print(json)
//            
//            //self.backBtnClick()
//  
//            //token的值已经获取到，返回的anyobject是个字典，开始进行字典转模型
//            //1. 将anyobjec强行转成字典
//       
//            //2.  将字典转为模型
//            guard let jsonDict = json as? [String: AnyObject] else {
//       
//                return
//                
//                }
//            
//            //实现字典转模型
//            
//            let model = YDUserModel(dict: jsonDict)
//            
//            print(model.access_token)
//            
//            
//            let successinfo = { ()->() in
//                
//                
//            
//            
//            
//            }
//            
//            let failureInfo = { ()->() in
//            
//            
//            
//            
//            
//            }
//            
//            self.loadUserInfo(model, infoSuccess: successinfo, infoFailed: failureInfo)
//     
// 
//            }, failure: { (NSURLSessionDataTask, error) -> Void in
//                
//                print(error)
//                
//                        })
//
//    }
    

}




// 第四步: 获取用户数据

//extension YDLogViewController{


//    func loadUserInfo (model: YDUserModel, infoSuccess: ()->(),infoFailed: ()->()){
//        
//        
//        
//        guard let token = model.access_token,uid = model.uid else {
//            
//            return
//            
//        }
//        
//        /*
//        
//        
//        必选	类型及范围	说明
//        access_token	true	string	采用OAuth授权方式为必填参数，OAuth授权后获得。
//        uid	false	int64	需要查询的用户ID。
//        screen_name	false	string	需要查询的用户昵称。
//        
//        */
//  
//        let dic = [ "access_token":token,
//            "uid":uid
//            
//            
//        ]
//        
//        let manager = YDClientManager.shareManager
//        
//        manager.sendRequest(.GET, URLString: "https://api.weibo.com/2/users/show.json", parameters: dic, progress: nil, success: { (NSURLSessionDataTask, JSON) -> Void in
//            
//            
//            print(JSON)
//            
//            //将JSON转为字典
//            
//            guard let jsonDic = JSON as? [String: AnyObject] else {
//            
//            
//                return
//                
//            }
//
//            
//            print(jsonDic)
//            
//            //进行字典转模型
//            
//            let screenName = jsonDic["screen_name"] as? String
//            
//            let image_url = jsonDic["profile_image_url"] as? String
//            
//            
//            model.screen_name = screenName
//            
//            model.profile_image_url = image_url
//            
//            model.saveModel()
//            
//    
//            }) { (NSURLSessionDataTask, error) -> Void in
//                
//      
//                print(error)
//                
//        }
//        
//        
//        
//        
//        
//    }
    


//}